telegram session hijacking
telegram session hijacking
2018年5月16日,Talos发表了关于Telegrab的一篇文章,介绍了可以劫持Telegram会话的恶意软件。原理非常简单:如果攻击者可以复制桌面用户的会话令牌(session token),那么就能劫持会话。除了本地存储的信息外,攻击者不需要其他任何信息。无论信息是否经过加密都不重要,只要复制这个信息,攻击者就能使用该新信息创建一个影子会话(shadow session)。
实战环境
有的时候,迫于一些目的,当有目标PC机权限的时候,需要对该目标的个人通讯进行持续的监控获取更多的有利信息,那么就有了session hijacking的需求。
目录结构
Telegram用户数据一般存放在与telegram.exe同目录下的tdata文件夹内。
一个有效的telegram登录用户的目录结构如下:

session hijacking流程
众所周知,telegram默认是支持多端登录的,多端之间没有设备交叉验证来获取密钥解密,所以这种特性就造成了就变成了劫持session的最完美的前置条件,仅仅只需要你得tdata文件。 现在流传在网上的session劫持方法都是通过复制整个tdata文件夹进行session的劫持,但对于一个使用了较长时间的telegram来说,tdata的体积会变得十分庞大(MB,甚至GB的量级),这在实战的过程中会有很大的局限性。 在强隐蔽的情况下,动大动作去拖取上GB的做法是十分不理智的。 现在我们已经有解读大部分tdata文件的能力,因此可以选取最关键(保存session)的文件,减小拖取文件的体积,从而更方便于session的劫持。 能够成功进行session劫持的关键文件有:
- tdata/key_datas
- tdata/D877F783D5D3EF8Cs
- tdata/D877F783D5D3EF8C
key_datas是保存密钥的,D877F783D5D3EF8Cs保存的云端拉取信息的通讯密钥,而D877F783D5D3EF8C则是保存了用户的基础信息。

session hijacking start
获取了上述的三个文件之后,我分别用两个不同的虚拟机来完成此次的劫持过程。
从192.168.59.129这台机器导出目标的三个资源文件,然后在192.168.59.138这台机器的TG存入这三个资源文件,然后打开138的TG。



passcode情况下的 劫持
注:
如果开启了本地密码认证成功,此会话劫持之后依然要输入密码。
且此本地密钥是不和云端同步的,所以只能想其他办法获得此密钥。


参考
https://www.anquanke.com/post/id/167866 针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究 https://www.dongzt.cn/archives/514.html Windows 下Telegram Desktop的身份凭证窃取 http://www.ctfiot.com/23645.html Telegram session劫持探索